package vip.xiaonuo.core.pojo.login;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.hutool.core.lang.Dict;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.security.core.GrantedAuthority;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>Title : </p>
 * <p>Description : </p>
 * <p>DevelopTools : IDEA</p>
 * <p>DevelopSystem : Windows11</p>
 *
 * @Author : zxw
 * @Date 2023/9/13 13:45
 */
@Data
public class AppLoginUser implements BaseUserDetailService, Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    private Long id;

    /**
     * 登录名称 即为:手机号
     */
    private String loginName;

    /**
     * 用户唯一识别码
     */
    private String userCode;

    /**
     * 邀请码
     */
    private String inviteCode;

    /**
     * 腾讯im 生成编码ID
     */
    private String txCode;


    /**
     * 是否完善过基础信息   1已完善  2 未完善
     */
    private Integer isComplete;


    /**
     * 头像id
     */
    private Long headPicId;

    /**
     * 头像url
     */
    private String headPicUrl;

    /**
     * 昵称
     */
    private String nick;

    /**
     * 性别：1男 2女
     */
    private Integer sex;

    /**
     * 签名
     */
    private String sign;

    /**
     * 生日
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date birthday;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 星座
     */
    private String constellation;

    /**
     * 身高id
     */
    private Integer heightId;

    /**
     * 体重id
     */
    private Integer weightId;

    /**
     * 职业id
     */
    private Integer careerId;

    /**
     * 收入id
     */
    private Integer incomeId;

    /**
     * 标签id 数组 英文逗号隔开
     */
    private String tagIds;

    /**
     * 学历id
     */
    private String educId;

    /**
     * 省份id
     */
    private String prId;

    /**
     * 城市id
     */
    private String cityId;

    /**
     * 区id
     */
    private String distId;

    /**
     * 形象id 数组 英文逗号隔开
     */
    private String introPicIds;

    /**
     * 形象url
     */
    private List<String> introPicIdUrl;
    /**
     * 经度
     */
    private BigDecimal lon;

    /**
     * 维度
     */
    private BigDecimal lat;

    /**
     * 状态（字典 0正常 1冻结 2删除）
     */
    private Integer status;

    /**
     * vip
     */
    private Integer vip;

    /**
     * vip到期时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date vipTime;

    /**
     * 门票
     */
    private Integer ticket;

    /**
     * 详细地址
     */
    private String address;

    /**
     * 文本价格
     */
    private BigDecimal textPrice;

    /**
     * 语音价格
     */
    private BigDecimal voicePrice;

    /**
     * 视频价格
     */
    private BigDecimal videoPrice;

    /**
     * 在线状态（字典 0在线 1未在线 ）
     */
    private Integer onlineStatus;

    /**
     * 用户钻石
     */
    private BigDecimal diamondNum;

    /**
     * 用户金币
     */
    private BigDecimal goldNum;

    /**
     * 动态数量
     */
    private Integer dynamicNum;

    /**
     * 动态数量
     */
    private Integer fanNum;

    /**
     * 粉丝数量
     */
    private Integer followNum;

    /**
     * 访客数量
     */
    private Integer visitorNum;

    /**
     * 实名认证
     */
    private Map<String,String> realNameAuth;

    /**
     * 真人认证
     */
    private Map<String,String> realAuth;

    /**
     * 语音签名
     */
    private Map<String,String> voiceSing;

    /**
     * 最后登陆IP
     */
    private String lastLoginIp;

    /**
     * 最后登陆地址
     */
    private String lastLoginAddress;

    /**
     * 最后登陆时间
     */
    private String lastLoginTime;

    /**
     * 最后登陆所用浏览器
     */
    private String lastLoginBrowser;

    /**
     * 最后登陆所用系统
     */
    private String lastLoginOs;


    @Override
    public List<String> getPermissions() {
        return null;
    }

    @Override
    public Integer getAdminType() {
        return null;
    }

    @Override
    public LoginEmpInfo getLoginEmpInfo() {
        return null;
    }

    @Override
    public List<Long> getDataScopes() {
        return null;
    }

    @Override
    public List<Dict> getRoles() {
        return null;
    }

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return null;
    }

    @Override
    public String getPassword() {
        return null;
    }

    @Override
    public String getUsername() {
        return null;
    }

    @Override
    public boolean isAccountNonExpired() {
        return false;
    }

    @Override
    public boolean isAccountNonLocked() {
        return false;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return false;
    }

    @Override
    public boolean isEnabled() {
        return false;
    }

    @Override
    public Long getId() {
        return this.id;
    }

    @Override
    public String getAccount() {
        return this.loginName;
    }

    @Override
    public String getTxCode() {
        return this.txCode;
    }


}
